package cn.oms.auth.provider.controller;

import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Value;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
 * 支付宝服务API控制器
 */
//@Api(tags = "支付宝服务API接口")
@RestController
@RequestMapping("/alipay/api")
@Slf4j
@Api(tags = "Alipay API接口")
public class AlipayController {

//    @Value("${oms.alibaba.alipay.redirect_uri}")
//    private String redirect_uri;
//
//    @Value("${oms.alibaba.alipay.appid}")
//    private String appid;

    /**
     * 支付宝登录 沙箱测试
     */
    @RequestMapping("/alipayLogin")
    public String alipayLogin() {
        String appid="2021000119643535";
        String redirect_uri="http://localhost:9000/oauth/alipay/api/callback";
        try {
            // 将网页地址进行转码 避免其他人知道你的redirect_uri回调地址 ,要进行一个简单的转码
            URLEncoder.encode(redirect_uri, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        // scope 参数
        // auth_user 网页授权 获取用户基本信息（比如 头像、昵称等），但是这种方式需要用户手动同意授权，同意后就可以得到用户的基本信息
        // 或者 auth_base 静默授权 用户授权并跳转到回调页，用户感知的就是直接进入了回调页（通常是业务页）
        String url = "https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id="+appid+"&scope=auth_user&redirect_uri="+redirect_uri;

//        https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
//        https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
//        https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL

        // 前端重定向
        return "redirect:" + url;
    }


    /**
     * 支付宝回调地址
     *
     * @return
     */
    @RequestMapping("/callback")
    public String callback(
            @RequestParam("app_id") String app_id,
            @RequestParam("auth_code") String auth_code) {
        System.out.println("app_id = " + app_id + ", auth_code = " + auth_code);

        // 支付宝公钥
        String ALIPAY_PUBLIC_KEY = "";
        // 网站私钥
        String APP_PRIVATE_KEY = "";

        return "1";
    }

}
